The present invention relates to an information processing system and, more particularly, to an information processing device for executing compressed instructions and a method for producing such a compressed program.
In some conventional information processing systems for successively executing instructions in a program stored in a memory, the instructions are compressed and stored in the memory to reduce the required memory size, in which case each compressed instruction is decompressed to its original form before being executed. Methods of compression proposed in the art include those using the Huffman coding, and table conversion methods for high speed processing.
With the table conversion method, compressible instructions of high frequencies are assigned bit lengths shorter than a predetermined instruction bit length, and the table associates the bit information of each uncompressed instruction with that of the compressed instruction. Thus, an instruction is stored in memory in a compressed form, and is executed after being decompressed to its original form referring to the table. This reduces the size of the memory required for storing the program.
With some conventional table conversion methods, instructions to be compressed are selected in view of the frequency of each set of (typically two) consecutive instructions, instead of the frequency of each individual instruction, in order to improve the instruction compression rate (e.g., see Japanese Laid-Open Patent Publication No. 2000-267848).
When a program is compressed, not all instructions are compressed. Particularly, an instruction cannot simply be compressed if it is the destination of a branch instruction. Typically, a set of two or more compressed instructions are stored in each instruction bit field in a compressed program. If an instruction being a branch destination is included in the set, it may be impossible to determine to which instruction the program should jump. Therefore, each instruction labeled as being a branch destination (hereinafter such a label will be referred to also as a “branch label) needs to be stored in the memory uncompressed even if the instruction is compressible. Thus, it is difficult to achieve a high compression rate with programs including many instructions with the branch label.